package com.zll.dubboapi.service.impl;

import com.zll.dubboapi.service.UserService;

/**
 * @Description 用户接口本地存根
 * 本质上是个静态代理
 * @Author ZhangLinlu
 * @Date 2020/11/12
 **/
public class UserServiceStub implements UserService {

    private final UserService userService;

    /**
     * 构造函数传入真正的远程代理对象
     * @param userService
     */
    public UserServiceStub(UserService userService) {
        this.userService = userService;
    }

    @Override
    public String getAddress(String userName) {
        /**
         * 此代码在客户端执行
         * 你可以在这里做：
         * 1.ThreadLocal本地缓存
         * 2.预先验证参数是否合法
         * 3.错误时返回默认数据
         * 等等
         */
        System.out.println("我进入本地存根啦。。。");
        String result = null;
        try {
            result = userService.getAddress(userName);
        } catch (Exception e) {
            System.out.println("调用用户接口出异常了，我来返回容错数据");
            result = "我叫容错数据";
        }
        return result;
    }
}
